package com.ruoyi.violate.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.violate.domain.CategoryNumber;
import com.ruoyi.violate.domain.ViolateTilte;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.violate.mapper.ViolateClassNumberMapper;
import com.ruoyi.violate.domain.ViolateClassNumber;
import com.ruoyi.violate.service.IViolateClassNumberService;

/**
 * 【请填写功能名称】Service业务层处理
 * 
 * @author ruoyi
 * @date 2023-05-13
 */
@Service
public class ViolateClassNumberServiceImpl implements IViolateClassNumberService 
{
    @Autowired
    private ViolateClassNumberMapper violateClassNumberMapper;

    @Autowired
    private ViolateTilteServiceImpl violateTilteService ;

    /**
     * 查询【请填写功能名称】
     * 
     * @param id 【请填写功能名称】主键
     * @return 【请填写功能名称】
     */
    @Override
    public ViolateClassNumber selectViolateClassNumberById(String id)
    {
        return violateClassNumberMapper.selectViolateClassNumberById(id);
    }

    /**
     * 更新number数据
     */
    @Override
    public void updateNumber(){

            //获取数据库title的所有的数据
            List<ViolateTilte> violateTiltes = violateTilteService.selectViolateTilteList(new ViolateTilte());

            //删除数据库中所有数据
          violateClassNumberMapper.deleteViolateClassNumberAll() ;

            HashMap<String, Integer> mapType = new HashMap<>();
            HashMap<String, Integer> mapType1 = new HashMap<>();
            for (ViolateTilte vio : violateTiltes) {
                //判断添加多级类目种类
                if (mapType.containsKey(vio.getType())){
                    mapType.put(vio.getType() , mapType.get(vio.getType())+1) ;
                }else {
                    mapType.put(vio.getType() , 1 ) ;
                }
                //判断添加一级类目种类
                if (mapType1.containsKey(vio.getType1())){
                    mapType1.put(vio.getType1() , mapType1.get(vio.getType1())+1) ;
                }else {
                    mapType1.put(vio.getType1() , 1 ) ;
                }
            }

            ArrayList<ViolateClassNumber> violateClassNumbers = new ArrayList<>();

            //循环多级分类种类
            for(Map.Entry<String, Integer> entry : mapType.entrySet()){
                ViolateClassNumber violateClassNumber = new ViolateClassNumber();
                violateClassNumber.setId(IdUtils.simpleUUID());
                violateClassNumber.setTypeClass(entry.getKey());
                violateClassNumber.setTypeclassNumber(entry.getValue());
                violateClassNumbers.add(violateClassNumber) ;
            }

            int count = 0 ;
            //循环一级分类种类
            for(Map.Entry<String, Integer> entry : mapType1.entrySet()){
                violateClassNumbers.get(count).setType1Class(entry.getKey());
                violateClassNumbers.get(count).setType1classNumber(entry.getValue());
                count++ ;
            }


            //将集合中的数据添加进数据库
            for (ViolateClassNumber violateClassNumber : violateClassNumbers) {
                 this.insertViolateClassNumber(violateClassNumber) ;
            }
    }

    /**
     * 查询【请填写功能名称】列表
     * 
     * @param violateClassNumber 【请填写功能名称】
     * @return 【请填写功能名称】
     */
    @Override
    public List<ViolateClassNumber> selectViolateClassNumberList(ViolateClassNumber violateClassNumber)
    {
        return violateClassNumberMapper.selectViolateClassNumberList(violateClassNumber);
    }

    /**
     * 新增【请填写功能名称】
     * 
     * @param violateClassNumber 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int insertViolateClassNumber(ViolateClassNumber violateClassNumber)
    {
        return violateClassNumberMapper.insertViolateClassNumber(violateClassNumber);
    }

    /**
     * 修改【请填写功能名称】
     * 
     * @param violateClassNumber 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int updateViolateClassNumber(ViolateClassNumber violateClassNumber)
    {
        return violateClassNumberMapper.updateViolateClassNumber(violateClassNumber);
    }

    /**
     * 批量删除【请填写功能名称】
     * 
     * @param ids 需要删除的【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteViolateClassNumberByIds(String[] ids)
    {
        return violateClassNumberMapper.deleteViolateClassNumberByIds(ids);
    }

    /**
     * 删除【请填写功能名称】信息
     * 
     * @param id 【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteViolateClassNumberById(Long id)
    {
        return violateClassNumberMapper.deleteViolateClassNumberById(id);
    }
}
